Express Checkout

Note: Spartacus 3.x is no longer maintained. Please upgrade to the latest version.

Note: Spartacus 3.x was tested with SAP Commerce Cloud versions 1905 to 2105. Spartacus 3.x has not been verified to work with (and is not guaranteed to work with) SAP Commerce Cloud 2211 or later releases.

Note: This feature is introduced with version 1.2 of the Spartacus libraries.

Express checkout allows the user to skip all steps and sees the review summary page instantly after click “Go to checkout”.

The guard will check that the user has at least 1 shipping address and 1 payment method - if there are more it will choose default. After setup address, it will choose the default delivery mode for current configuration.

If everything has been successful, the user should be redirected to review summary. Else, he will go through the checkout steps.

In the review summary step, the user will see pre-set data, there is also the possibility to update step.


Table of Contents


Configuration

Functionality is steering by 2 new optional properties:

  • Flag express: Allow for express checkout when default shipping method and payment method are available.
  • Array defaultDeliveryMode: Default delivery mode for i.a. for express checkout. Set preferences in order with general preferences (eg. DeliveryModePreferences.LEAST_EXPENSIVE) or specific delivery codes.
  checkout?: {
    //...
    express?: boolean;
    defaultDeliveryMode?: Array<DeliveryModePreferences | string>;
  };
enum DeliveryModePreferences {
  FREE = 'FREE',
  LEAST_EXPENSIVE = 'LEAST_EXPENSIVE', // but not free
  MOST_EXPENSIVE = 'MOST_EXPENSIVE',
}

Default Configuration

  checkout: {
    //...
    express: false,
    defaultDeliveryMode: [DeliveryModePreferences.FREE],
  };

Own Configuration

To provide your own configuration, you can provide it in module providers with provideConfig function:

provideConfig({
  //...
  checkout: {
    //...
    express: true,
    defaultDeliveryMode: ['sample-code'],
  },
});

Configuration Specification

For default delivery mode we provide an array of values.

The algorithm will choose the first matched option from available.

Examples

We have sample data:

const [FREE_CODE, STANDARD_CODE, PREMIUM_CODE] = [
  'free-gross',
  'standard-gross',
  'premium-gross',
];
const [freeMode, standardMode, premiumMode] = [
  { deliveryCost: { value: 0 }, code: FREE_CODE },
  { deliveryCost: { value: 2 }, code: STANDARD_CODE },
  { deliveryCost: { value: 3 }, code: PREMIUM_CODE },
];
  • For defaultDeliveryMode: [DeliveryModePreferences.FREE] we can expect behavior:
availableDeliveryModes: [freeMode, standardMode, premiumMode]
result: FREE_CODE
availableDeliveryModes: [standardMode, premiumMode]
result: STANDARD_CODE
availableDeliveryModes: [premiumMode]
result: PREMIUM_CODE
  • For defaultDeliveryMode: [DeliveryModePreferences.LEAST_EXPENSIVE] we can expect behavior:
availableDeliveryModes: [freeMode, standardMode, premiumMode]
result: STANDARD_CODE
availableDeliveryModes: [standardMode, premiumMode]
result: STANDARD_CODE
availableDeliveryModes: [premiumMode]
result: PREMIUM_CODE
  • For defaultDeliveryMode: [DeliveryModePreferences.FREE, DeliveryModePreferences.MOST_EXPENSIVE] we can expect behavior:
availableDeliveryModes: [freeMode, standardMode, premiumMode]
result: FREE_CODE
availableDeliveryModes: [standardMode, premiumMode]
result: PREMIUM_CODE
availableDeliveryModes: [standardMode]
result: STANDARD_CODE
  • For specified codes defaultDeliveryMode: [STANDARD_CODE] we can expect behavior:
availableDeliveryModes: [freeMode, standardMode, premiumMode]
result: STANDARD_CODE